package edu.nf.relaxenjoy.service;

import com.github.pagehelper.PageInfo;
import edu.nf.relaxenjoy.domain.dto.PostDTO;
import edu.nf.relaxenjoy.domain.vo.BrowseRecordDTO;
import edu.nf.relaxenjoy.domain.vo.PostVo;

import java.util.List;

/**
 * @author zhu
 * @date 2024-12-10
 */
public interface PostService {

    /**
     * 根据id删除当前用户上传到图片
     *
     * @param idList
     * @param uid
     */
    void deleteImgs(List<String> idList, String uid);

    /**
     * 分页获取所有的图片信息
     *
     * @param pageNum 分页参数，第几页
     * @param pageSize 分页参数，每页几条
     * @return 内容实体集合
     */
    PageInfo<PostVo> getPage(Long pageNum, Long pageSize);

    /**
     * 根据专辑id删除图片
     *
     * @param pageNum
     * @param pageSize
     * @param albumId
     * @param type
     * @return
     */
    PageInfo<PostVo> getAllImgByAlbum(Long pageNum, Long pageSize, String albumId, Integer type);

    /**
     * 得到当前图片信息
     *
     * @param id
     * @return
     */
    PostVo getImgDetail(String id);

    /**
     * 发布图片信息
     *
     * @param postDTO
     * @return
     */
    Long publish(PostDTO postDTO);


    //void updateStatus(ImgDetailDTO imgDetailsDTO);

    /**
     * 根据图片上传状态
     *
     * @param postDTO
     * @return
     */
    Long updatePost(PostDTO postDTO);

    /**
     * 获取热榜数据
     *
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageInfo<PostVo> getHot(Integer pageNum, Integer pageSize);

    /**
     * 得到所有的浏览记录根据用户id
     *
     * @param pageNum
     * @param pageSize
     * @param uid
     * @return
     */
    List<PostVo> getAllBrowseRecordByUser(Long pageNum, Long pageSize, String uid);

    /**
     * 增加一条浏览记录
     *
     * @param browseRecordDTO
     */
    void addBrowseRecord(BrowseRecordDTO browseRecordDTO);

    /**
     * 删除浏览记录
     *
     * @param uid
     * @param idList
     */
    void delRecord(String uid, List<String> idList);

    /**
     * 批量上传数据
     */
    void addBulkData();

    /**
     * 批量上传数据到redis中
     */
    void addBulkRedisData();
}
